#!/usr/bin/env node

//网课
// const fs = require('fs');

// //读取文件操作
// fs.readFile('./nodejs-logo.bmp', function (err, buf) {
//   if (err) {
//     console.error(err);
//     process.exit(1);
//   }
//   //位视图前两个字节的编码就是ascii编码
//   if (buf.toString('ascii', 0, 2) === 'BM') {
//     //读取信息
//     console.log('width:', buf.readInt32LE(0x12));
//     console.log('height:', buf.readInt32LE(0x16));
//     console.log('color depth:', buf.readInt16LE(0x1c));
//   }
// })

const fs = require('fs');

// 检查命令行参数的数量
if (process.argv.length !== 3) {
  console.error('Usage: node script.js <file_name>');
  process.exit(1); // 参数不正确时，以退出码 1 退出
}

// 获取命令行参数中的文件名
const fileName = process.argv[2];

// 检查文件是否存在
if (!fs.existsSync(fileName)) {
  console.error('Error: File does not exist.');
  process.exit(1);
}

// 读取文件操作
fs.readFile(fileName, function (err, buf) {
  if (err) {
    console.error(err);
    process.exit(1);
  }
  // 位视图前两个字节的编码就是ascii编码
  if (buf.toString('ascii', 0, 2) === 'BM') {
    // 读取信息
    try {
      console.log('width:', buf.readInt32LE(0x12));
      console.log('height:', buf.readInt32LE(0x16));
      console.log('color depth:', buf.readInt16LE(0x1c));
    } catch (error) {
      console.error('Error: Failed to read image information.');
      process.exit(1);
    }
  } else {
    console.error('Error: Not a valid BMP file.');
    process.exit(1);
  }
});